﻿namespace Kyoh.Lib.Text
{
    /// <summary>文字列に対するマッチングパタンのインタフェースを定義します。</summary>
    public interface IPattern
    {
        /// <summary>指定されたマッチ文字集合と一致する対象が入力文字列内で見つかったかどうかを示します。</summary>
        bool IsMatch(string input);

        /// <summary>指定されたマッチ文字集合と一致する対象が入力文字列内で見つかったかどうかを示します。</summary>
        bool IsMatch(string input, int startat);

        /// <summary>指定した入力文字列内でマッチ文字集合に一致するすべての文字列を置換します。</summary>
        string Replace(string input, string replacement);

        /// <summary>指定した入力文字列内でマッチ文字集合に一致するすべての文字列を置換します。</summary>
        string Replace(string input, string replacement, int startat);

        /// <summary>指定した入力文字列内でマッチ文字集合に一致するすべての文字列を置換します。</summary>
        string Replace(string input);

        /// <summary>指定した入力文字列内でマッチ文字集合に一致するすべての文字列を置換します。</summary>
        string Replace(string input, int startat);

        /// <summary>マッチングパタン文字列を取得します。</summary>
        string Pattern { get; }

        /// <summary>置換文字列を取得します。</summary>
        string Replacement { get; }
    }
}